/*
 * Copyright (C) 2006 Johan Maasing johan at zoom.nu Licensed under the Apache
 * License, Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package nu.zoom.catonine.swing.rule;

import java.awt.Color;
import java.awt.Component;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

import nu.zoom.catonine.stylerule.StyleRule;

/**
 * Swing cell renderer to display a sample of the coloring of a style rule.
 * 
 * @author "Johan Maasing" &lt;johan@zoom.nu&gt;
 * 
 */
public class StyleRuleColorCellRenderer extends JLabel implements TableCellRenderer {
	private static final String LOREM_IPSUM =
			"1234-56-78,90: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vehicula tristique justo, sit amet feugiat justo pretium vel.";
	private static final long serialVersionUID = 1L;
	private Color defaultForeground;
	private Color defaultBackground;

	public StyleRuleColorCellRenderer() {
		super();
		setOpaque(true);
		defaultForeground = getForeground();
		defaultBackground = Color.WHITE;
	}

	@Override
	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
			int row, int column) {
		StyleRule rule = (StyleRule) value;
		if (rule.isSupress()) {
			setBackground(defaultBackground);
			setForeground(defaultBackground);
		} else {
			if (rule.getFont() != null) {
				setFont(rule.getFont());
			} else {
				setFont(null);
			}
			if (rule.getBackground() != null) {
				setBackground(rule.getBackground());
			} else {
				setBackground(defaultBackground);
			}
			if (rule.getForeground() != null) {
				setForeground(rule.getForeground());
			} else {
				setForeground(defaultForeground);
			}
		}
		setText(LOREM_IPSUM);
		return this;
	}
}
